import { ORDER_CHANNEL,FLIGHT_TYPE_ID } from "@/pd-libs/enum/pd-enum";
import dayjs from "dayjs";
import PD from "..";

/**
 * 获取php订单结构上的订单时间渲染结果
 * @param {number} timestamp 订单时间
 * @param {ORDER_CHANNEL} channel 订单渠道
 * @param {number} range 订单时间间隔，单位分钟
 * @returns {string} demo：11:40-12:40
 */
export function getPhpRenderOrderTime(timestamp : number, channel : ORDER_CHANNEL, range : number) : string {
	const targetFormat = 'HH:mm';
	//易快跑、拼哒约车（乘客端）、快后出行，时间=订单时间前后半小时
	if ([ORDER_CHANNEL.ykp, ORDER_CHANNEL.pdyc, ORDER_CHANNEL.kh].includes(channel)) {
		return `${PD.Filters.Common.dateFormat(timestamp - 30 * 60 * 1000, targetFormat)}-${PD.Filters.Common.dateFormat(timestamp + 30 * 60 * 1000, targetFormat)}`;
	};
	//同程、哈啰根据range来处理
	if ([ORDER_CHANNEL.tongChenghitchRide, ORDER_CHANNEL.haLuohitchRide].includes(channel)) {
		return range && range > 0 
			? `${PD.Filters.Common.dateFormat(timestamp - range * 60 * 1000, targetFormat)}-${PD.Filters.Common.dateFormat(timestamp + range * 60 * 1000, targetFormat)}`
			: `${dayjs(timestamp)}`;
	};
	return PD.Filters.Common.dateFormat(timestamp, targetFormat);
}

type OrderTimePhp2goReq = {
	start : number,//开始时间
	end : number,//结束时间
	channel : ORDER_CHANNEL,//订单渠道
	time_range ?: number,//时间间隔，单位秒
}
export function orderTimePhp2go (ops : OrderTimePhp2goReq) {
	if ([ORDER_CHANNEL.ykp, ORDER_CHANNEL.pdyc, ORDER_CHANNEL.kh].includes(ops.channel)) {
		return {
			start : (ops.start - 30 * 60) * 1000,
			end : (ops.start + 30 * 60) * 1000,
		};
	};
	if ([ORDER_CHANNEL.haLuohitchRide, ORDER_CHANNEL.tongChenghitchRide].includes(ops.channel)) {
		return ops.time_range && ops.time_range > 0 ? {
			start : ops.start * 1000,
			end :  (ops.start + ops.time_range) * 1000,
		} : {
			start : ops.start * 1000,
			end : ops.start * 1000
		};
	};
	if (ops.time_range) {
		return {
			start : (ops.start - ops.time_range) * 1000,
			end :  (ops.start + ops.time_range) * 1000,
		};
	};
	return {
		start : ops.start * 1000,
		end : ops.start * 1000
	};
}

type OrderFlightTimeReq = {
	type_id ?: FLIGHT_TYPE_ID,
	expectArrTime ?: number,//预计落地时间
	planArrTime ?: number,//计划落地时间
	actualArrTime ?: number,//实际到达时间
	actualDepTime ?: number,//实际起飞时间
	expectDepTime ?: number,//预计起飞时间
}

//航班时间处理
export function orderFlightTime (_v : OrderFlightTimeReq){
	const isDelay = (_v.expectArrTime && _v.planArrTime && _v.expectArrTime > _v.planArrTime) ? true : false;//是否延迟
	const isAdvance = (_v.expectArrTime && _v.planArrTime && _v.expectArrTime < _v.planArrTime) ? true : false;//是否提前
	const result = ref({
		delayTime : '',
		expectTimeStr : '',
	});
	if(_v.type_id === FLIGHT_TYPE_ID.drop){//接机
		result.value.expectTimeStr = _v.actualArrTime ? PD.Filters.Common.dateFormat(_v.actualArrTime * 1000,'MM月DD日 HH:mm') : (_v.expectArrTime ? ` 预计${PD.Filters.Common.dateFormat(_v.expectArrTime * 1000,'MM月DD日 HH:mm')}抵达` : '');
		result.value.delayTime = (_v.actualArrTime) ? '航班已抵达' : isDelay ? ' 延误' : isAdvance ? ' 提前' : '';
	};
	if(_v.type_id === FLIGHT_TYPE_ID.dropOff){//送机
		result.value.expectTimeStr = _v.actualArrTime ? PD.Filters.Common.dateFormat(_v.actualArrTime * 1000,'MM月DD日 HH:mm') : (_v.expectDepTime ? ` 预计${PD.Filters.Common.dateFormat(_v.expectDepTime * 1000,'MM月DD日 HH:mm')}起飞` : '');
		result.value.delayTime = (_v.actualDepTime) ? '航班已起飞' : isDelay ? ' 延误' : isAdvance ? ' 提前' : '';
	};
	return result.value;
}